﻿<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<textarea cols="150" rows="60">

已经做的工作：
1：uri 路由到app 三层格式
2：TApp启动api， 优先级控制，TApp本身控制，更高api的hook方法控制，更高sys请求变量控制。
3：TTpl启动smarty， 增加了foreach语法，
4：TCache 缓存api请求的结果，修改了 smarty中include处理，使api的修改，相关include文件的修改，都会自动更新缓存。
5：TMemcache key的默认使用gcacheKey方法获取 
6：TMod 用来加载 mod下的mod类。 __call __get __set方法可以方便插件扩展
       使用系统默认缓存方法：
       $mod = new TMod('class_name');
       $mod->beginMemcacheOnce($flag=0,$expire=1800,$refresh=0);//紧接着function_name方法使用缓存。
       $mod->function_name($params); //使用缓存
       $mod->function_name($params); //缓存设置已失效，不使用缓存
       $mod->beginMemcache(0,1800,1);//紧接着的function_name强制刷新缓存。
       $mod->function_name($params); //不使用缓存，并更新缓存
       $mod->openCache($flag=0,$expire=1800,$refresh=0);//$mod始终使用这个缓存设置
       $mod->function_name($params); //使用缓存
       $mod->function_name2($params); //使用缓存
       $mod->closeCache();//$mod关闭缓存
       $mod->function_name($params); //不使用缓存
       
7：TTable 用来方便使用mysql表的相关操作。  __call __get __set方法可以方便插件扩展
8：TLog 用来统一日志的使用
9: TTask 用来管理队列。
10：TAutoload用来自动require_once (只自动加载frame中的类，其余的类加载有各自单独的AUTOLOAD方法)
11：web/admin/下都是框架的后台管理功能， 后台功能会越来越多

12: 改进了gCacheKey，可以使用后台缓存管理，刷新版本号，进行缓存失效。 统一了memcache key
13：新增TPlugin类，用来统一插件使用，在createApp,TApp,TTpl,等地点都加上了TPlugin::start
14: 增加dao主从设计,与事务。 
      需要：$slave_daos = array('dbschema=d&dbuser=root&dbpass=&dbhost=127.0.0.1&dbport=3306',
                    'dbschema=d&dbuser=root&dbpass=&dbhost=127.0.0.1&dbport=3306',
                    'dbschema=d&dbuser=root&dbpass=&dbhost=127.0.0.1&dbport=3306',);
        define('D_DAO_SLAVE',json_encode($slave_daos));
        unset($slave_daos);
使用从库：TTableMs::getMs(1);
使用事务：TTableMs::startTransation(); ::rollback();::commit();      
TTable 默认使用主库，使用select与get方法时，使用从库。

15: TImport::import('com/lib','.cls.php');//使用TImport可以增强autoload
16: 修改了TApp的start $tapp = TApp::start($this->main_app,$_REQUEST,$this->sys,1); 
         TApp 不在直接输出 ob，（header 还没有考虑）
                        增加几个get与set方法
         $ob = $tapp->getOb();//获取ob
         $api_config = $tapp->getApiConfig();//获取api的设置
         
 17： layout 已加，使用例子可以参考 http://www.tframe.com/demo/demo/layout


之后计划做的工作
        测试设计
   smarty模板功能升级
        前端js与css的规范，版本号问题     
        硬编码处理
        脚本统一管理
        
  ： 自动代码检查，找到不符合要求的代码。
  ： 权限设计
  ： 
 
 自主的采集信息。
 
 单表的操作可以直接写sql语句，联表查的sql，必须封装成方法来使用。 sql检查模式，可以识别所有不规范的代码。
 
 数据库优化，缓存，可管理，可简单的扩展解决性能问题。安全。推送技术。
 对于BS架构的一般分析 响应时间、点击率、吞吐量、TPS（每秒事务数）。 
 开发扩展性、鲁棒性、适应性、稳定性好、高效且能够较好地配置在当前及今后网络中的缓存方案
 
 1）缓存体系结构：缓存代理在网络中如何组织和配置；

（2）代理合作：代理间如何合作，相互合作的代理可以提高命中率而改善缓存系统的性能；

（3）缓存路由：当一处缓存代理失效时，如何将请求向其它缓存代理转发；

（4）缓存替换算法：当缓存空间不够时，缓存内容如何替换； 

（5）缓存一致性：即缓存内容的时效性问题，如何防止缓存的内容过时；

（6）内容预取：代理如何决定从服务器或其它代理处进行内容预取以减少客户的访问延迟；

（7）负载平衡：如何解决网络中的“Hot spot”现象；

（8）缓存内容：什么样的内容可以被缓存。


缓存依赖
缓存影响
资源key 
多线程（用于抛出更新缓存任务）

场景1： get的key的时候，检查相关的依赖key，是否还存在。如果有任何一个，不存在，那么就产生一个更新任务，丢给缓存管理器，去更新这个缓存。
       根据这个key可以找到相关的输入数据，以及更新脚本，然后自动执行。
场景2： 当set的key时候，顺带检查其影响key，然后产生一个更新任务，丢给缓存管理器。

控制那些key需要这种即时更新，可以设置缓存管理过滤更新任务，来达到目的。

缓存代理，需要工具来监控是否失效，即时调整缓存代理设置。
缓存替换算法，考虑控制缓存个数， 缓存需要分等级，当个数达到警告的时候，等级低的停止缓存。
缓存一致性，通过缓存依赖和缓存影响，加过期自动更新来达到目的。
内容预取  ，尽量使用缓存，即使缓存已经失效，在失效时，另起线程主动更新。
负载平衡，设计备用缓存机器，来分担热点机器。
缓存内容，只有很关心的内容，才去缓存。 在一些修改场景要关掉缓存。


 
 </textarea>       
</body>
</html>